利用R绘制GO条目图
这个案例来介绍GO注释条目图的绘制。
在对基因进行GO注释之后,可以通过GO条目图,直观展示出基因的分布情况,例如不同差异表达基因,可以直观的反映出在生物过程(biological process)、细胞组分(cellular component)和分子功能(molecular function)富集的GO term上差异基因的个数分布情况。
图1:生物过程、细胞组分和分子功能三大类别分类画的三个子图
有多种方法绘制GO注释结果,最简单的方法是利用ggplot2包进行绘制。
绘制GO条目图需要注意几点:
1、由于GO的注释结果可能很多,所以,每次最好取其中一部分进行绘制。例如选择最前面的10个-30个基因来进行绘制;
2、Term中的文字较多,空间太小会重叠在一起,可以选择变换角度显示或者调换坐标轴。
输入文件:
一般的GO注释结果都包含几个比较重要的列。
Ontology,Term,GO_ID,Input_number,Percentage
案例代码:
#加载ggplot2包
library(ggplot2)
go <- read.csv("data/go.csv",header = T)
#View(go)
#选取数据,每个分类取前10个类目
go_sort <- go[order(go$Ontology,-go$Percentage),]
m <- go_sort[go_sort$Ontology=="Molecular function",][1:10,]
c <- go_sort[go_sort$Ontology=="Cellular component",][1:10,]
b <- go_sort[go_sort$Ontology=="Biological process",][1:10,]
slimgo <- rbind(b,c,m)
#首先需要将Trem转换为因子
slimgo$Term=factor(slimgo$Term,levels=slimgo$Term)
#有时候记不住列名,可以提前查看一下
colnames(slimgo)
#横轴为Term,纵轴为百分比Percentage,Ontology映射为颜色
p=ggplot(data = slimgo, mapping = aes(x=Term,y=Percentage,fill=Ontology))
#绘制条形图
p+geom_bar(stat="identity")
#进行坐标转换
pp=p+geom_bar(stat="identity")+coord_flip()
pp=p+geom_bar(stat="identity")+coord_flip()+scale_x_discrete(limits=rev(levels(slimgo$Term)))
pp
#修改一下图例顺序
pr=pp+scale_fill_discrete(name="Ontology",breaks=c("Biological process","Molecular function","Cellular component"))
#因为已经映射为颜色了,可以去掉图例,节省空间,有多种方法去除图例
pr=pp+scale_fill_discrete(name="Ontology",breaks=c("Biological process","Molecular function","Cellular component"))+guides(fill=FALSE)
pr+theme_bw()
测试数据以及代码下载:
链接:https://pan.baidu.com/s/1gfpN4Cr 密码:uq5z
---------- END ----------